# mittelman.mod   OOR2-AN-20-7
# AMPL coding: H. Mittelman

var Y{i in 1..20} >=0, <=1, binary;

minimize obj: 10*Y[5]*Y[7]*Y[12]*Y[13]*Y[18]*Y[19]*Y[20] +
7*Y[1]*Y[2]*Y[3]*Y[4]*Y[11]*Y[15] + 1*Y[3]*Y[4]*Y[6]*Y[7]*Y[11] +
12*Y[3]*Y[4]*Y[11]*Y[15] + 8*Y[6]*Y[7]*Y[11]*Y[16] + 3*Y[6]*Y[7]*Y[12]*Y[18]*Y[20] +
1*Y[12]*Y[13]*Y[18]*Y[20] + 5*Y[5]*Y[13]*Y[18]*Y[19]*Y[20] + 3*Y[1]*Y[2]*Y[15]*Y[16];

s.t. ineq1: 3*Y[5]*Y[7]*Y[12]*Y[13]*Y[18]*Y[19]*Y[20] -
12*Y[1]*Y[2]*Y[3]*Y[4]*Y[11]*Y[15] - 8*Y[3]*Y[4]*Y[6]*Y[7]*Y[11] +
1*Y[3]*Y[4]*Y[11]*Y[15] - 7*Y[1]*Y[2]*Y[15]*Y[16] + 2*Y[17]*Y[18]*Y[19]*Y[20] <= -2;

s.t. ineq2: 1*Y[1]*Y[2]*Y[3]*Y[4]*Y[11]*Y[15] - 10*Y[3]*Y[4]*Y[6]*Y[7]*Y[11] -
5*Y[6]*Y[7]*Y[11]*Y[16] + 1*Y[6]*Y[7]*Y[12]*Y[18]*Y[20] + 7*Y[12]*Y[13]*Y[18]*Y[20] +
1*Y[5]*Y[13]*Y[18]*Y[19]*Y[20] <= -1;

s.t. ineq3: 5*Y[5]*Y[7]*Y[12]*Y[13]*Y[18]*Y[19]*Y[20] -
3*Y[1]*Y[2]*Y[3]*Y[4]*Y[11]*Y[15] - 1*Y[3]*Y[4]*Y[6]*Y[7]*Y[11]  -
2*Y[5]*Y[13]*Y[18]*Y[19]*Y[20] + 1*Y[17]*Y[18]*Y[19]*Y[20] <= -1;

s.t. ineq4: -5*Y[5]*Y[7]*Y[12]*Y[13]*Y[18]*Y[19]*Y[20] +
3*Y[1]*Y[2]*Y[3]*Y[4]*Y[11]*Y[15] + 1*Y[3]*Y[4]*Y[6]*Y[7]*Y[11]  +
2*Y[5]*Y[13]*Y[18]*Y[19]*Y[20] - 1*Y[17]*Y[18]*Y[19]*Y[20] <= 1;

s.t. ineq5: -4*Y[3]*Y[4]*Y[6]*Y[7]*Y[11] - 2*Y[3]*Y[4]*Y[11]*Y[15] -
5*Y[6]*Y[7]*Y[12]*Y[18]*Y[20] + 1*Y[12]*Y[13]*Y[18]*Y[20] -
9*Y[5]*Y[13]*Y[18]*Y[19]*Y[20] - 2*Y[1]*Y[2]*Y[15]*Y[16] <= -3;

s.t. ineq6: 9*Y[1]*Y[2]*Y[3]*Y[4]*Y[11]*Y[15] - 12*Y[3]*Y[4]*Y[11]*Y[15] -
7*Y[6]*Y[7]*Y[11]*Y[16] + 6*Y[6]*Y[7]*Y[12]*Y[18]*Y[20] + 2*Y[5]*Y[13]*Y[18]*Y[19]*Y[20]
- 15*Y[1]*Y[2]*Y[15]*Y[16] + 3*Y[17]*Y[18]*Y[19]*Y[20] <= -7;

s.t. ineq7: -8*Y[5]*Y[7]*Y[12]*Y[13]*Y[18]*Y[19]*Y[20] +
5*Y[1]*Y[2]*Y[3]*Y[4]*Y[11]*Y[15] + 2*Y[3]*Y[4]*Y[6]*Y[7]*Y[11] -
7*Y[3]*Y[4]*Y[11]*Y[15] - 1*Y[6]*Y[7]*Y[11]*Y[16] - 5*Y[12]*Y[13]*Y[18]*Y[20] -
10*Y[1]*Y[2]*Y[15]*Y[16] <= -1;

data;
let{i in 1..20} Y[i] := 0.5;

## # ... Bob Daniel's solution (f* = 13)
## fix Y[1] := 0;
## fix Y[2] := 0;
## fix Y[3] := 1;
## fix Y[4] := 1;
## fix Y[5] := 0;
## fix Y[6] := 1;
## fix Y[7] := 1;
## fix Y[8] := 0;
## fix Y[9] := 0;
## fix Y[10] := 0;
## fix Y[11] := 1;
## fix Y[12] := 0;
## fix Y[13] := 0;
## fix Y[14] := 0;
## fix Y[15] := 1;
## fix Y[16] := 0;
## fix Y[17] := 0;
## fix Y[18] := 0;
## fix Y[19] := 0;
## fix Y[20] := 0;

